package com.bonc.jedis.utils;

import java.util.List;

import redis.clients.jedis.Transaction;

/**
 * 事务处理类
 * @author WYB
 *
 */
public abstract class TransactionHandler {

	/**
	 * 具体事务要做的事情，不需要关注watch方法和exec方法，已经封装好
	 * @param trans
	 */
	public abstract void execute(Transaction trans);

	/**
	 * 如果需要在事务过程中，监听某个key，则 重写此方法
	 * @return
	 */
	public String[] getWatchKeys() {
		return null;
	}
	/**
	 * 执行具体实现的execute方法，返回结果
	 * @param trans
	 * @return
	 */
	public List<Object> trans(Transaction trans) {
		execute(trans);
		List<Object> results = trans.exec();
		return results;
	}
}
